package in.model.base;
import in.lib.manager.CacheManager;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
import lombok.ToString;
import android.os.Parcel;
import android.os.Parcelable;
import com.esotericsoftware.kryo.serializers.TaggedFieldSerializer.Tag;
import com.google.gson.JsonObject;
/**
* Base class for Posts and Users
*/
@ToString(includeFieldNames = true)
public class NetObject implements Parcelable
{
@Tag(0x01) @NonNull @Getter @Setter private String id = "-1";
@Tag(0x02) @NonNull @Getter @Setter private String filterTag = "";
/**
* Stub method. You should implement this in your subclass to
* populate the class' members from @param object
* @param object The json object to populate
*/
public NetObject createFrom(JsonObject object)
{
return null;
}
/**
* Stub method. You should implement this in your subclass to
* handle Parcealable serialization.
* @param object
*/
public NetObject createFrom(Parcel object)
{
setId(object.readString());
setFilterTag(object.readString());
return this;
}
@Override public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(getId());
dest.writeString(filterTag);
}
@Override public int describeContents()
{
return 0;
}
public byte[] serialize()
{
return CacheManager.getInstance().serialize(this);
}
public static NetObject deserialize(byte[] data)
{
return CacheManager.getInstance().deserialize(data, NetObject.class);
}
public static final Parcelable.Creator<NetObject> CREATOR = new Creator<NetObject>()
{
@Override public NetObject[] newArray(int size)
{
return new NetObject[size];
}
@Override public NetObject createFromParcel(Parcel source)
{
return new NetObject().createFrom(source);
}
};
}